package br.com.modelo;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

@ManagedBean
@SessionScoped
public class ProdutoBean {

    private Produto produto;
    private Produto produtoVenda;
    private List<Produto> produtoList;
    private Integer quantidadeVenda;

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public Produto getProdutoVenda() {
        return produtoVenda;
    }

    public void setProdutoVenda(Produto produtoVenda) {
        this.produtoVenda = produtoVenda;
    }

    public List<Produto> getProdutoList() {
        return produtoList;
    }

    public void setProdutoList(List<Produto> produtoList) {
        this.produtoList = produtoList;
    }

    public Integer getQuantidadeVenda() {
        return quantidadeVenda;
    }

    public void setQuantidadeVenda(Integer quantidadeVenda) {
        this.quantidadeVenda = quantidadeVenda;
    }

    public ProdutoBean() {
        this.produto = new Produto();
        this.produtoVenda = new Produto();
        this.quantidadeVenda = null;
        this.produtoList = new ArrayList<Produto>();
    }

    public void addProduto() {
        this.produto.setId((int) (Math.random() * 60000));
        this.produtoList.add(produto);
    }

    public String venderProduto() {
        for (Produto obj : this.produtoList) {
            if (obj.getId() == this.produtoVenda.getId()) {
                if (this.quantidadeVenda <= obj.getQuantidade()) {
                    obj.setQuantidade(obj.getQuantidade() - this.quantidadeVenda);
                    FacesMessage msg = new FacesMessage("Venda realizada com sucesso");
                    FacesContext.getCurrentInstance().addMessage(null, msg);
                    return "index";
                } else {
                    FacesMessage msg = new FacesMessage("Quantidade indisponível em estoque");
                    FacesContext.getCurrentInstance().addMessage(null, msg);
                    return "vendaProduto";
                }
            }
        }
        return "produtoNaoEncontrato";
    }

    public void limpar() {
        this.produto = new Produto();
        this.produtoVenda = new Produto();
        this.quantidadeVenda = null;
    }

    public String cancelarSubmissao() {
        FacesMessage msg = new FacesMessage("Registro cancelado");
        FacesContext.getCurrentInstance().addMessage(null, msg);
        return "cancelamento";
    }

    private void initTest() {
        this.produto = new Produto();
        this.produto.setId((int) (Math.random() * 60000));
        this.produto.setNome("Teste");
        this.produto.setDataEntrada("01012012");
        this.produto.setTipo("1");
        this.produto.setQuantidade(20);
        this.produtoList = new ArrayList<Produto>();
        this.produtoList.add(this.produto);
        this.produto = new Produto();
    }
}
